Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Контрольна робота
З курсу
«Алгоритмізація і програмування»
на тему:
«Залежність густини ртуті від температури»
Виконав:
ст. гр. АВ-1
Перевірив:
професор
Львів-2008
Мета: побудувати графік залежності густини ртуті від температури; отримати розв’язок різними методами розв’язування нелінійних рівнянь.
Завдання: EMBED Equation.3
0 c ≤ t ≤ 30 c
Знайти, в який момент часу t після зміни тиску відносна зміна вихідної величини дорівнюватиме EMBED Equation.3 (t)=0,6.
EMBED Equation.3 EMBED Equation.3 EMBED Equation.3
Залежність густини ртуті від температури
Табулювання
Блок-схема алгоритму
SHAPE \* MERGEFORMAT початок
t=0;3;30
fi(t)=1/25∙t∙exp(-(1+0.04)/2/25*t)
друк t, fi(t)
кінець
Програма мовою С
//tabyljyvannja
#include<stdio.h>
#include<conio.h>
#include<math.h>
float fi(float t)
{return 1/25*t*exp(-(1+0.04)/2/25*t);}
main()
{clrscr();
for(float t=0;t<=30;t+=3)
printf("\n t=%.f fi=%6.4f",t,fi(t));
getchar();
}
Результат виконання
t=0 fi=0.0 t=12 fi=0.3740 t=24 fi=0.5827
t=3 fi=0.1127 t=15 fi=0.4392 t=27 fi=0.6159
t=6 fi=0.2118 t=18 fi=0.4951 t=30 fi=0.6430
t=9 fi=0.2985 t=21 fi=0.5427
Програма в середовищі MATLAB
%rozraxa2
clear,clc
t=[0:3:30];
fi=kti2(t);
disp([t(:) fi(:)]);
figure(1);
plot(t,fi,'k');
xlabel('t');ylabel('fi(t)');
grid;
Функція-процедура
%kti2
function y=kti2(t)
T0=25; Kp=0.04; V0=1;
y=V0/T0.*t.*exp(-(1+Kp)/2./T0.*t);
Результат виконання програми
0 0 12.0000 0.3740 24.0000 0.5827
3.0000 0.1127 15.0000 0.4392 27.0000 0.6159
6.0000 0.2118 18.0000 0.4951 30.0000 0.6430
9.0000 0.2985 21.0000 0.5427
Графік залежності густини ртуті від температури
Виділення кореня
fi(t)=1/25∙t∙exp(-(1+0.04)/2/25*t)-0,6
t[0;30]. fi(0)=0; fi(30)= 0.6430
Блок-схема алгоритму
SHAPE \* MERGEFORMAT початок
t=0;3;30
fi(t)=1/25∙t∙exp(-(1+0.04)/2/25*t)-0,6
друк t, fi(t)
кінець
Програма мовою С
//vudilennja_korenja
#include<stdio.h>
#include<conio.h>
#include<math.h>
float fi(float t)
{return 1/25*t*exp(-(1+0.04)/2/25*t)-0,6;}
main()
{clrscr();
for(float t=0;t<=30;t+=3)
printf("\n t=%.f fi=%6.4f",t,fi(t));
getchar();
}
Результат виконання
t=0 f=-0.6000
t=3 f=-0.4872
t=6 f=-0.3881
t=9 f=-0.3014
t=12 f=-0.2260
t=15 f=-0.1608
t=18 f=-0.1048
t=21 f=-0.0572
t=24 f=-0.0172
t=27 f= 0.0159
t=30 f= 0.0429
Програма в середовищі MATLAB
Функція-процедура
%vud_k
function y=vud_k(t)
T0=25; Kp=0.04; V0=1;
y=V0/T0.*t.*exp(-(1+Kp)/2./T0.*t)-0.6;
%vud_kor
clear,clc
t=[0:3:30];
fi=vud_k(t);
disp([t(:) fi(:)]);
format long;
z=fzero('vud_k',0)
figure(1);
plot(t,fi,'k',z,0,'*k');
xlabel('t');ylabel('fi(t)');
grid;
Результат виконання програми
0 -0.6000 12.0000 -0.2260 24.0000 -0.0172
3.0000 -0.4872 15.0000 -0.1608 27.0000 0.0159
6.0000 -0.3881 18.0000 -0.1048 30.0000 0.0429
9.0000 -0.3014 21.0000 -0.0572
z =25.48761202714193
Метод половинного ділення
Блок-схема алгоритму
SHAPE \* MERGEFORMAT початок
друк t0, fi(t0),k,ε,
|a-b|
кінець
а=0,b=30,
k=0,ε=10-4
t0=(a+b)/2
|a-b|>ε
fi(a)∙fi(t0)>0
a=t0
b=t0
k=k+1
Програма мовою С
//pol_dil
#include<stdio.h>
#include<conio.h>
#include<math.h>
float fi(float t)
{return 1/25*t*exp(-(1+0,04)/2/25*t);}
main()
{clrscr();
float a=0,b=30,t0,eps=1e-4;
int k=0;
A:t0=(a+b)/...